import { _decorator, Component, Label } from 'cc';
import ICustomListItem from '../../libs/component/list/ICustomListItem';
import CharacterPO from '../../pojo/po/CharacterPO';
const { ccclass, property } = _decorator;

@ccclass('CharacterPOItem')
export class CharacterPOItem extends Component implements ICustomListItem {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/
    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/
    protected _value: CharacterPO = undefined!;
    /***************************************************************
     *PropertyUI 引用的控件
     ***************************************************************/
    @property({ group: { name: 'PO', id: '1' }, type: Label, tooltip: `文本组件` })
    protected nameLabel: Label = undefined!;

    /****************************************************************************************************************
     * Lifecycle 生命周期相关方法
     ****************************************************************************************************************/
    protected onLoad(): void {

    }

    protected onEnable(): void {
        this.updateView(this.value);
    }
    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/
    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    protected updateView(value: CharacterPO = this.value) {
        if (!value) { return; }
        if (!this.enabledInHierarchy) { return; }

        if (this.nameLabel) {
            this.nameLabel.string = value.name;
        }

    }
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/
    public get value(): CharacterPO {
        return this._value;
    }
    public set value(value: CharacterPO) {
        this._value = value;
        this.updateView(value);
    }
}


